#include <iostream>
#include <vector>
#include <sstream>
#include <cstring>

using namespace std;

void print(string s, int len)
{
    len-=s.length(); //总共要输出len个空格
    cout<<s;
    while(len--) cout<<' ';
}

int main()
{
    vector<string> lines[1005];
    string s,t;
    int maxlen[185]={0}; // 储存每列单词的最长长度
    int row=0;
    while( getline(cin, s) )
    {
        stringstream ss(s);
        int col=0;
        while( ss >> t )
        {
            lines[row].push_back(t); //插入到vector中
            if(maxlen[col] < t.length()) maxlen[col] = t.length();
            col++;
        }
        row++;
    }
    // 处理输出
    for(int i=0 ; i<row ; i++)
    {
        for(int j=0 ; !lines[i].empty() ; j++)
        {
            // 要对每行最后输出的元素做单独处理，不能让他们输出多余的空格
            if( lines[i].size() > 1 ) print(lines[i][0], maxlen[j]+1); // 这里的+1处理就是让每列之间保证有一个空格
            else cout<<lines[i][0]<<endl;
            // 删除已经输出的那个元素
            lines[i].erase( lines[i].begin() );
        }
    }
    return 0;
}
